package com.zyf.chapter02.creation.prototype;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 替换数据为最新版本，目前仅仅存在增加和更新的需求
 * 需求：系统中的数据要么都是版本 a, 要么都是版本 b
 * 存在问题：构建成本过高，其实我们只需要新增或者更新的关键词数据就可以了
 * @author yifeng
 */
public class V2Demo {
    private HashMap<String, SearchWord> currentKeywords = new HashMap<>();
    private long lastUpdateTime = -1;

    public void refresh() {
        // 新版本
        HashMap<String, SearchWord> newKeywords = new HashMap<>();

        // 从数据库中取出所有的数据
        List<SearchWord> toBeUpdatedSearchWords = getSearchWords();
        long maxNewUpdatedTime = lastUpdateTime;
        for (SearchWord searchWord : toBeUpdatedSearchWords) {
            newKeywords.put(searchWord.getKeyword(), searchWord);
        }
        // 新版本创建好之后，在一次性地将服务版本替换为新版本
        currentKeywords = newKeywords;
    }
    private List<SearchWord> getSearchWords() {
        return null;
    }

    private List<SearchWord> getSearchWords(long lastUpdateTime) {
        // 从数据库中取出更新时间 > lastUpdateTime 的数据
        return null;
    }
}
